Introduction
============

This is an encryption add-on for irssi, it's based on blowfish. It
supports private messages and channel encryption. It also includes a
secure key-exchange system.

Requirements
============

The requirements for building FiSH-irssi are:

-   cmake
-   pkg-config
-   Glib 2.0
-   OpenSSL
-   irssi (with includes)

Debian / Ubuntu
---------------

    # apt-get install build-essential irssi-dev libssl-dev cmake git

OpenBSD
-------

    # pkg_add glib2 irssi cmake git

Arch Linux
----------

    # pacman -S cmake pkg-config glib2 openssl irssi

Building
========

Just type in the following commands:

    $ git clone https://github.com/falsovsky/FiSH-irssi.git
    $ cd FiSH-irssi
    $ cmake .
    $ make

If you want to install to **/usr** instead of **/usr/local**

    $ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr .
    $ make

Run `make install` as a privileged user (if needed) to install it.

Running
=======

If you installed the module in the default directory, you just need to
run the following command inside irssi to load it:

    /load fish

If not, just include the path while loading:

    /load /home/username/libfish.so

Load automatically at start-up
------------------------------

    echo "load fish" >> /home/username/.irssi/startup

Configurations
==============

FiSH-irssi has some configurations that can be set via `/set` on irssi.

    process_outgoing

FiSH outgoing messages.

Default value is 1

    process_incoming

unFiSH incoming messages.

Default value is 1

    auto_keyxchange

Do an automatic key exchange in private messages.

Default value is 1

    plain_prefix

Prefix needed to send an unFiSHed message. For example:

`+p Hi there in clear text`

Default value is `+p`

    mark_encrypted

String used to mark a FiSHed message.

Default value is `\002>\002`

    mark_position

Defines if the mark should be a prefix (1) or a suffix (0).

Default value is 1

    nicktracker

Allows seamless conversations when your chat partner changes his nick.
This feature will copy the old key to use with his new nick. It affects
nick changes for opened queries!

Default value is 1

    mark_broken_block

Indicates whether a message is incomplete.

Default value is `\002&\002`

Commands
========

    /topic+ <message>

Sets a FiSHed topic in the current channel.

    /topic+ TAB

Allows to edit a FiSHed topic.

    /notice+ [nick / #channel] <message>

Sends a FiSHed notice to the current window or to the specified target.

    /me+ <message>

Send a FiSHed action to the current window.

    /setkey [servertag] [nick / #channel] <key>

Sets the key used to FiSH the messages for the current window or to the
specified target.

    /delkey [servertag] [nick/#channel]

Unsets the key used to FiSH the messages for the current window or to
the specified target.

    /key|showkey [servertag] [nick / #channel]

Shows the used key to FiSH the messages for the current window or to the
specified target. The key will appear in the target window.

    /keyx

Forces a DH key exchange in the current window.

    /setinipw <password>

Sets a custom password used to cipher the contents of blow.ini.

    /unsetinipw

Unset the custom password used to cipher blow.ini.

    /fishlogin

Used to ask again for the blow.ini password if the user inserts an
invalid password at start-up.

    /fishhelp|helpfish

Show a little help inside irssi.

Tested
======

FiSH-irssi has been tested on various OS and arches:

-   Linux/x86
-   Linux/sparc
-   Linux/arm
-   OpenBSD/x86
-   OpenBSD/macppc
-   OpenBSD/sgi
-   FreeBSD/x86
-   NetBSD/x86

